【shell 基础13】输入输出与重定向 | 您所在的位置:网站首页 › 重定向输入流 到另一个进程 › 【shell 基础13】输入输出与重定向 |
文章目录
一. 标准输入和标准输出二、重定向1. 定义2. 输出的重定向3. 对标准错误输出重定向4. 输入的重定向
一. 标准输入和标准输出
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,文件描述符分别是 0、1、2。 当运行命令时,命令启动的进程就会自动打开这三个保留的文件描述符。 如下图 在 Linux中 一切都是文件,包括输入和输出,其中: 0 表示标准输入,对应的文件描述符是 /proc/self/fd/0。1 表示标准输出,对应的文件描述符是 /proc/self/fd/1。2 标准错误,对应的文件描述符是 /proc/self/fd/2。可以使用这些文件描述符来控制命令程序或者脚本的输入和输出。 我们常用的命令2>&1的含义是标准错误重新定向到标准输出,即指将标准输出、标准错误指定为同一输出路径。 二、重定向 1. 定义 shell在执行命令时可以修改标准输入的输入源和标准输出的目标位置,这个功能称为重定向。 在重定向时,n> file这种语法表示将文件描述符n的输出重定向到file文件。如果省略n,文件描述符则默认为1,因此>会对标准输出重定向。 2. 输出的重定向 标准输出的目标位置通常指向的是终端屏幕。可以使用 > 符号修改标准输出的目标位置。 例子1: 比如下面的示例就会将ps命令的输出重定向到result.txt文件。 $ ps > result.txt ←----- 由于已经重定向到 result.txt 文件,所以屏幕上不会输出任何内容 $ cat result.txt PID TTY TIME CMD 10745 pts/0 00:00:00 bash 10873 pts/0 00:00:00 ps例子2: echo命令的执行结果将被重定向到hello.txt文件。 $ echo hello > hello.txt $ cat hello.txt hello注: 只要命令能将执行结果输出到标准输出,就可以实现重定向。 3. 对标准错误输出重定向 要想对标准错误输出的错误信息进行重定向,可以使用2>符号。 例子:ls命令的标准错误输出会被重定向到error.txt文件。 $ ls /xxx 2> error.txt $ cat error.txt ls: 无法访问'/xxx': 没有那个文件或目录4. 输入的重定向 对标准输入也可以像对标准输出一样进行重定向操作。 以tr命令为例: tr命令是用于替换字符串的命令,其语法为tr 待替换的字符串 被替换后的字符串。 tr b B abc' aBc' my book从键盘输入一些内容后,tr命令会以行为单位替换输入内容,并输出替换后的结果。要想退出tr命令,可以使用Ctrl + D结束输入状态。
|
CopyRight 2018-2019 实验室设备网 版权所有 |